Unplanned events that interfere with the availability of data can seriously impact business operations. Furthermore, any permanent data loss will likely have serious negative consequences for the continued viability of a business. Therefore, when disaster strikes, companies must be prepared to eliminate or minimize data loss and to recover quickly with useable data.
Backups and/or point-in-time copies of data can be maintained in order to decrease the likelihood that data will be lost or unavailable. Several techniques utilized to minimize data loss and improve the availability of data require that modifications to a data volume be tracked. For example, such modifications are often tracked in systems that use “mirror-breakoff” snapshots, in order to allow the snapshots, which are created by detaching a mirror volume, to be resynchronized with a corresponding primary data volume. Similarly, such modifications can be tracked in systems that perform mirroring in order to be able to resynchronize a mirror when the mirror is brought back online after becoming detached from the primary volume due to an I/O error.
Another technique commonly used to improve the accessibility of data and reduce the probability of data loss is storage virtualization. Storage virtualization is the pooling of physical storage from multiple network storage devices into what appears from a user or user application perspective to be a single storage device. Storage virtualization is often used as part of a storage area network (SAN). A virtual storage device appears as one storage device, regardless of the types of storage devices (e.g., hard disk drives, tape drives, or the like) pooled to create the virtualized storage device. Storage virtualization may be performed in a host data processing system, a SAN fabric, or in storage devices directly.
In some conventional systems (e.g., where virtualization is provided in a SAN fabric), virtualization operations are partitioned between specialized hardware (e.g., an application specific integrated circuit or “ASIC” or a proprietary architecture processor, or the like) responsible for the servicing of input/output requests (e.g., the performance of updates) and associated translation between virtual and physical addresses and generalized hardware in combination with software (e.g., a general purpose processor) responsible for establishing the address translation mappings and performing more complex operations.
Tracking modifications to a data volume within such a sectioned storage virtualization system requires a transition between the operation of the aforementioned specialized hardware and generalized hardware/software combination (e.g., to perform additional processing through a “fault” mechanism which causes an interrupt and context switch) and consequently disruption of the ordinary I/O (Input/Output) processing. As update tracking may require a fault or other disruption, the performance of update tracking in a system where virtualization is provided in a SAN fabric may add substantial latency to the performance of operations that modify the underlying data volume.